﻿using System;

namespace ADDDF.Infrastructure
{
    public interface IEntity
    {
        /// <summary>
        /// Gets the key of an entity.
        /// </summary>
        object Key { get; }

        /// <summary>
        /// Check whether the keys of two entities are equivalent.
        /// </summary>
        bool SameKeyAs(IEntity another);

        /// <summary>
        /// Check whether two entities are consider to be the same instance.
        /// </summary>
        bool SameEntityAs(IEntity another);

        /// <summary>
        /// Check whether two entities are having equivalent values.
        /// </summary>
        bool SameValueAs(IEntity another);
    }
}
